package 多线程.生产者消费者模式;

public class Box {
    //表示第x瓶奶
    private  int milk;

    //表示奶箱状态
    private boolean state = false;

    //提供存储牛奶和获取牛奶的操作
    public synchronized void put(int milk) throws InterruptedException {
        //如果有牛奶,等待消费
        if(state){
            wait();
        }

        //如果没牛奶,就生产牛奶,生产完毕修改状态
            this.milk = milk;
        System.out.println("送奶工将第"+this.milk+"瓶乃放入奶箱");
        state=true;
        //唤醒其他等待的线程
        notifyAll();
    }
    public synchronized void  get() throws InterruptedException {
        //if没有牛奶,等待生产
        if(!state){
            wait();
        }

        //如果有,进行消费

        System.out.println("用户拿到第"+this.milk+"瓶奶");
        state=false;
        notifyAll();
    }
}
